# M.2 SSD 硬盘 ***Copyright © Quectel Wireless Solutions Co., Ltd. 2026. All rights reserved.*** --- M.2 SSD 使用 PCIe 通道接入,本文说明 NVMe SSD 在 Linux 系统中的硬件安装、分区、格式化、挂载和读写测试流程。示例设备名以 `/dev/nvme0n1` 为例,分区为 `/dev/nvme0n1p1`。 ## 硬件接口 M.2 NVMe SSD 通过 PCIe 接口连接到单板计算机。安装前请先关机断电,确认转接线、GPIO 转接头、尼龙柱和螺钉齐全;如果同一 PCIe/M.2 位置已安装其他 PCIe 设备,请先拆下后再安装 SSD。 ```{image} images/image_HbtebdZJToRUm2xc5PXcpACvnFh.webp :width: 1155px :height: 771px :align: center ``` ## 快速安装指南 1. 将 PCIe 转接线均匀插入单板计算机的 PCIe 接口,再从两侧向下按压固定支架,确保转接线牢固固定。 2. 将 M.2 HAT+ 插入到M2设备 40PIN插口。 3. 插入 M.2 NVMe SSD,确认 SSD 与 HAT 不松动后再上电。 **【安装完成正视图】** ```{image} images/image_QgOpbd3k9o1PLex4FOZcJDK7n6d.webp :width: 822px :height: 334px :align: center ``` **【安装完成背面图】** ```{image} images/image_UVYjbWi4ToW62ExSZQscafCGnWb.webp :width: 796px :height: 337px :align: center ``` **【安装完成侧视图】** ```{image} images/image_DsUtbS1G8oNQjyxBOO9cyTkQn1e.webp :width: 737px :height: 356px :align: center ``` **【M.2 HAT+ 固定完成示意图】** ```{image} images/image_WGqRbM7SCofgpAxL6q9cSTl8nRc.webp :width: 882px :height: 585px :align: center ``` > 💡 分区、格式化和裸盘写入都会破坏 SSD 原有数据。若 SSD 不是空盘,请先备份数据;不确定时只执行设备识别和只读检查。 ## 软件功能使用 ### 确认 NVMe 设备 系统启动后,先确认 PCIe 设备和 NVMe 块设备是否被识别。正常情况下会生成 `/dev/nvme0` 和 `/dev/nvme0n1`;如果 SSD 已有分区,还会生成 `/dev/nvme0n1p1` 等分区节点。 ```shell lspci -nn 00:00.0 PCI bridge [0604]: Rockchip Electronics Co., Ltd RK3576 [1d87:3576] (rev 01) 01:00.0 Non-Volatile memory controller [0108]: Samsung Electronics Co Ltd NVMe SSD Controller 980 (DRAM-less) [144d:a809] ``` ```shell ls -l /dev/nvme* crw------- 1 root root 238, 0 Sep 3 09:48 /dev/nvme0 brw-rw---- 1 root disk 259, 0 Sep 3 09:48 /dev/nvme0n1 brw-rw---- 1 root disk 259, 1 Sep 3 09:48 /dev/nvme0n1p1 ``` ```shell lsblk -o NAME,MAJ:MIN,RM,SIZE,RO,TYPE,MOUNTPOINT,FSTYPE,MODEL /dev/nvme0n1 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT FSTYPE MODEL nvme0n1 259:0 0 238.5G 0 disk SAMSUNG MZ9LQ256HBJD-00B └─nvme0n1p1 259:1 0 238.5G 0 part ext4 ``` ```shell fdisk -l /dev/nvme0n1 Disk /dev/nvme0n1: 238.47 GiB, 256060514304 bytes, 500118192 sectors Disk model: SAMSUNG MZ9LQ256HBJD-00BVL Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 16384 bytes / 131072 bytes Disklabel type: gpt Disk identifier: 49D7C880-46CB-4694-AE9C-DBC36EEC5709 Device Start End Sectors Size Type /dev/nvme0n1p1 2048 500117503 500115456 238.5G Linux filesystem ``` ### 分区操作(fdisk) 新盘或已清空的 SSD 可能只有整盘节点 `/dev/nvme0n1`,需要先创建分区表和分区。执行以下命令进入 `fdisk` 交互界面: ```shell fdisk /dev/nvme0n1 ``` 在 `fdisk` 交互界面中依次输入: ```shell g # 创建 GPT 分区表 n # 新建分区,分区号、起始扇区和结束扇区均可保持默认 w # 写入分区表并退出 ``` 操作完成后,系统会生成第一个分区 `/dev/nvme0n1p1`。如分区节点未立即出现,可执行 `partprobe` 后再次检查。 ```shell partprobe /dev/nvme0n1 ls -l /dev/nvme0n1p1 lsblk /dev/nvme0n1 ``` ### 格式化分区(EXT4 格式) 使用 `mkfs.ext4` 将新分区格式化为 EXT4 文件系统: ```shell mkfs.ext4 /dev/nvme0n1p1 ``` ### 手动挂载分区 创建挂载目录,并将分区挂载到 `/mnt/myssd`: ```shell mkdir -p /mnt/myssd mount /dev/nvme0n1p1 /mnt/myssd findmnt /mnt/myssd TARGET SOURCE FSTYPE OPTIONS /mnt/myssd /dev/nvme0n1p1 ext4 rw,relatime,stripe=32 df -h /mnt/myssd Filesystem Size Used Avail Use% Mounted on /dev/nvme0n1p1 234G 2.1M 222G 1% /mnt/myssd ``` 若 `df -h` 输出中包含 `/dev/nvme0n1p1` 和 `/mnt/myssd`,表示挂载成功。 ### 配置自动挂载(可选) 如需重启后自动挂载,可在 `/etc/fstab` 文件末尾添加挂载配置。固定写设备名较直观,量产或长期使用时建议改用 UUID,避免设备名变化导致挂载失败。 ```shell # 先查询分区 UUID blkid /dev/nvme0n1p1 # 编辑 /etc/fstab,在文件末尾添加以下内容(二选一,不要同时添加) # 方式一:按设备名挂载 /dev/nvme0n1p1 /mnt/myssd ext4 defaults 0 2 # 方式二:按 UUID 挂载(推荐,将 xxxxx 替换为实际 UUID) UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /mnt/myssd ext4 defaults,nofail 0 2 # 保存后验证 mount -a df -h /mnt/myssd ``` ### 性能测试(读写速度验证) 在已挂载的文件系统上使用 `dd` 测试读写速度,测试完成后删除临时文件。 ```shell dd if=/dev/zero of=/mnt/myssd/testfile bs=1G count=1 oflag=direct 1+0 records in 1+0 records out 1073741824 bytes (1.1 GB, 1.0 GiB) copied, 3.31848 s, 324 MB/s ``` ```shell dd if=/mnt/myssd/testfile of=/dev/null bs=1G iflag=direct 1+0 records in 1+0 records out 1073741824 bytes (1.1 GB, 1.0 GiB) copied, 2.50334 s, 429 MB/s ``` ```shell # 清理测试文件 rm -f /mnt/myssd/testfile sync ``` ## 卸载与拆装 测试完成或需要拆装 SSD/HAT 前,请先同步数据并卸载文件系统,再关机断电。 ```shell sync umount /mnt/myssd ```